

Spec_iGEM_StatFunc.R<-function(){}

#for discretized bar plot & pther : Data is here always a vector based type
z_score <- function(X,Data) {
  E=(X-mean(Data,na.rm=TRUE))/(sd(Data,na.rm=TRUE))
  return(E)
}

z_score_2 <- function(X,Mean,SD) {
  E=(X-Mean)/(SD)
  return(E)
} 

interquartil_50 <- function(Data) {
  H=quantile(Data,probs=0.75,na.rm=TRUE,names=FALSE)
  G=quantile(Data,probs=0.25,na.rm=TRUE,names=FALSE)
  E=abs(H-G)
  return(E)  
}
#http://www.r-bloggers.com/r-geometric-mean/
geo_average <- function(Data) {
  E=exp(mean(log(Data)))
  return(E)
}
harm_average <- function(Data) {
  E=1/mean(1/Data)#, na.rm = TRUE )
  return(E)
}
midfail_average <- function(Data) {
  E=sd(Data, na.rm= TRUE )/length(Data)#, na.rm= TRUE) 
  return(E)	
}
variation_coefficient <- function(Data) {
  E=sd(Data)/abs(mean(Data))#, na.rm= TRUE))
  return(E)
}
entropy_sh <- function(Data) {
  D=Data
  L=length(D)
  E=0
  #D=D/L # relative p's already  frequencies !!! (with BioPhysConnectoR, if functional)
  a=1
  while(a<=L) {
    E=E+D[a]*log(D[a], base = 2)
    a=a+1
  }
  E=-E
  return(E)
}
eveness_sh <- function(Data) {
  E=entropy_sh(Data)
  a=as.numeric(length(Data))
  E=E/log2(a)
  return(E)
}
span <- function(Data) {
  E=diff(range(Data))#,na.rm=TRUE))
  return(E)
}
variation_span <- function(Data) {
  a=as.numeric(length(Data))
  E=span(Data)/(1+3.32*log10(a))
  return(E)
}  
